/*
基本数据类型之间的运算规则：

1. 自动类型提升
	结论： 当容量小的数据类型的变量与容量大的数据类型的变量做运算时，结果自动生成容量大的结果数据类型
	byte 、 char 、 short -> int -> long -> float -> double

2. 强制类型转换 自动类型提升运算的逆运算
	- 需要使用强转符号 "()"
	- 注意点： 强制类型转换，可能导致精度损失


PS: 容量：数的范围
*/


class VariableTest2{
	public static void main(String[] args) {

		// 自动类型提升

		byte b1 = 2;
		int i1 = 129;
		// 编译不通过
		// byte b2 = b1 + i1;

		int i2 = b1 + i1;
		long l1 = b1 + i1;
		System.out.println(i2);

		float f = b1 + i1 ;
		System.out.println(f);

		short s1 = 123;
		double d1 = s1;
		System.out.println(d1);

		// //  ******* 特别 
		// char c1 = 'a';
		// int i3 = 10;
		// int i4 = c1+i3;
		// System.out.println(i4);


		// byte b2 = 5;
		// byte b3 = b1 + c1;

		// short s2 = s1 + c1;
		// short s3 = b1 + b2;
		// // ********


        // 强制类型转换
        
		double d2 = 12.9;
		// 精度损失举例1
		int in1 = (int)d2;
		System.out.println(in1);

		// 没有精度损失
		long l2 = 123;
		short s4 = (short)l2;

		// 精度损失举例2
		int in2 = 128;
		byte b = (byte)in2;
		System.out.println(b);

	}
}